A storage system typically comprises one or more storage devices into which information may be entered, and from which information may be obtained, as desired. The storage system includes a storage operating system that functionally organizes the system by, inter alia, invoking storage operations in support of a storage service implemented by the system. The storage system may be implemented in accordance with a variety of storage architectures including, but not limited to, a network-attached storage environment, a storage area network and a disk assembly directly attached to a client or host computer. The storage devices are typically disk drives organized as a disk array, wherein the term “disk” commonly describes a self-contained rotating magnetic media storage device. The term disk in this context is synonymous with hard disk drive (HDD) or direct access storage device (DASD).
The storage operating system of the storage system may implement a high-level module, such as a file system, to logically organize the information stored on volumes as a hierarchical structure of data containers, such as files and logical units. For example, each “on-disk” file may be implemented as set of data structures, i.e., disk blocks, configured to store information, such as the actual data for the file. These data blocks are organized within a volume block number (vbn) space that is maintained by the file system. The file system may also assign each data block in the file a corresponding “file offset” or file block number (fbn). The file system typically assigns sequences of fbns on a per-file basis, whereas vbns are assigned over a larger volume address space. The file system organizes the data blocks within the vbn space as a “logical volume”; each logical volume may be, although is not necessarily, associated with its own file system.
A known type of file system is a write-anywhere file system that does not over-write data on disks. If a data block is retrieved (read) from disk into a memory of the storage system and “dirtied” (i.e., updated or modified) with new data, the data block is thereafter stored (written) to a new location on disk to optimize write performance. A write-anywhere file system may initially assume an optimal layout such that the data is substantially contiguously arranged on disks. The optimal disk layout results in efficient access operations, particularly for sequential read operations, directed to the disks. An example of a write-anywhere file system that is configured to operate on a storage system is the Write Anywhere File Layout (WAFL®) file system available from Network Appliance, Inc., Sunnyvale, Calif.
The storage system may be further configured to operate according to a client/server model of information delivery to thereby allow many clients to access data containers stored on the system. In this model, the client may comprise an application, such as a database application, executing on a computer that “connects” to the storage system over a computer network, such as a point-to-point link, shared local area network (LAN), wide area network (WAN), or virtual private network (VPN) implemented over a public network such as the Internet. Each client may request the services of the storage system by issuing file-based and block-based protocol messages (in the form of packets) to the system over the network.
Storage systems may be interconnected as a cluster with the capability that if one of the cluster storage systems fails, the surviving storage system assumes the identity and continues to service data access requests directed to the failed storage system. Typically such systems include a cluster interconnect adapted to provide a dedicated hardware monitoring system between the storage systems. An example of such a clustered system is described in U.S. Pat. No. 7,039,828 entitled SYSTEM AND METHOD FOR CLUSTERED FAILOVER WITHOUT NETWORK SUPPORT, by John A. Scott issued May 2, 2006.
Typical clustered failover systems require access to dedicated cluster interconnect hardware mechanisms for effectuating certain operations, such as mirroring of the contents of memory. In such systems, when a write operation is received at a first cluster storage system or member, the contents of the write operation are both stored in a memory of the first cluster member and transported via a cluster interconnect to a second cluster member for storage in that member's memory. Thus, in the event of a failure of one of the members, the surviving cluster member may replay operations stored within its memory to bring the disks (or other storage devices) originally associated with the failed cluster member to a consistent state.
A virtual machine environment illustratively includes a computer, such as a storage system, executing a virtual machine operating system along with one or more “guest” operating systems to essentially implement virtual machines on the storage system. Each guest operating system may comprise a conventional operating system, such as Microsoft Windows or Linux, etc. or may comprise a specialized operating system, such as a storage operating system. Furthermore, it may be desirable to execute a plurality of guest operating systems (or a plurality of instantiations of a guest operating system) within a virtual machine environment configured in a clustered arrangement. Thus, a cluster may comprise of identical guest operating systems or may comprise of a heterogeneous pairing of guest operating systems, e.g., a Microsoft Windows based guest operating system paired with a Linux based guest operating system. Such a clustered configuration typically includes the capability that if one of the guest operating systems (instantiations) fails, the surviving instantiation of the guest operating system assumes the identity of the failed (instantiation of the) operating system thereby to enable continued processing of requests directed to the failed operating system (instantiation). However, when operating in a virtual machine environment, the virtual machine operating system typically controls the hardware of the storage system, thereby preventing use of dedicated cluster interconnect hardware by the guest operating systems. As a result, the guest operating systems are unable to effectuate certain operations, such as mirroring of the contents of their virtual machine memories. Accordingly, in response to a failure of one of the guest operating systems, the surviving guest operating system does not have a copy of received write data from the failed guest operating system, and thus, cannot replay such write requests to render storage devices consistent. As such, the utility of the clustered arrangement is reduced.